Pseudo-random number generation (PRNG) may be used in simulation and cryptographic applications. For example, Monte Carlo methods are pervasive simulation tools in physical and social sciences and rely on continuous random sampling to drive simulations of unpredictable processes. Monte Carlo simulations were among the first use cases for computers and are arguably some of the most important algorithms ever invented. Because fast and high-quality random number generation may be on the critical path of these applications, developing fast and high-quality PRNGs may improve the quality and speed of computational sciences.
Research into creating high-quality pseudo-random sequences has existed since the first Monte Carlo simulation on a digital computer. Today, while there are many PRNG algorithms, not all are created equal. No matter the method, pseudo-random output that is harder to distinguish from a truly random output better represents a truly random number stream. Statistical tests, such as the Knuth test, exist to identify patterns in pseudo-random sequences. These tests form the basis of many modern statistical test suites. The most comprehensive and stringent tests are the BigCrush test battery from TestU01 suite, which includes the functionality of the Knuth tests, DIEHARD, and the NIST statistical test suite. A test in the suite fails if it identifies a property of the pseudo-random sequence that should not exist in true randomness.